<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
global $data;

class Noticias extends CI_Controller {

    public function __construct() {
        parent::__construct();
        //redireccion segura
        if ($this->session->userdata('access') != 'grant') {
            redirect(base_url());
        }
        global $data;
        $data['responsableNombre'] = $this->session->userdata('responsableNombre');
        $data['place'] = 'noticias';
        $this->stats();
    }

    public function stats() {
        global $data;
        $data['acceso'] = $this->ciempies_model->lista_accesos();
        $data['tcolab'] = $this->ciempies_model->get_total('COLABORADOR');
        $data['ttutorial'] = $this->ciempies_model->get_total('TUTORIAL');
        $data['therramienta'] = $this->ciempies_model->get_total('HERRAMIENTA');
        $data['tuso_herramienta'] = $this->ciempies_model->get_total('uso_herramienta');
        $data['tvisita'] = $this->ciempies_model->get_total('visita');
    }

    //carga vista de noticias
    public function menu($opc) {
        global $data;

        //recuperamos variables del formulario
        $formulario = $this->session->userdata('formulario');
        $data['error'] = $this->session->userdata('error');
        $data['mensaje'] = $this->session->userdata('mensaje');
        $data['titulo_col'] = $formulario['titulo_col'];
        $data['keywords_col'] = $formulario['keywords_col'];
        $data['autor_col'] = $formulario['autor_col'];
        $data['nota_col'] = $formulario['nota_col'];
        $data['tituloe_col'] = $formulario['tituloe_col'];
        $data['notae_col'] = $formulario['notae_col'];
        $data['upload_done'] = $formulario['upload_done'];


        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        switch ($opc) {
            case 'agregar':
                $this->load->view('noticias/content_alta');
                break;
            case 'editar':
                $this->load->view('noticias/content_buscar');
                break;
        }
        $this->load->view('template/footer');

        //reiniciamos las variables
        $this->session->unset_userdata('formulario');
        $this->session->unset_userdata('mensaje');
        $this->session->unset_userdata('error');
    }

    //FUNCIÓN PARA CREAR LA MINIATURA A LA MEDIDA QUE LE DIGAMOS
    public function _create_thumbnail($filename, $ratio, $destino) {
        $config['image_library'] = 'gd2';

        //CARPETA EN LA QUE ESTÁ LA IMAGEN A REDIMENSIONAR
        $config['source_image'] = 'assets/uploads/' . $filename;
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = $ratio;

        //CARPETA EN LA QUE GUARDAMOS LA MINIATURA
        $config['new_image'] = $destino;
        $config['width'] = 480;
        $config['height'] = 640;
        $this->load->library('image_lib');
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        //borramos la original

        unlink($config['source_image']);
    }

    public function eliminarNoticia($key) {
        $fileList = $this->ciempies_model->eliminarNoticia($key);
        //regresara una lista de imagenes
        foreach ($fileList as $filename) {
            unlink('assets/uploads/noticias/' . $filename->URL);
        }
        $this->session->set_userdata('mensaje', '<div class="alert">
                                                    <button type="button" class="close" data-dismiss="alert">×</button>
                                                    <strong>Borrado</strong> terminado.
                                                </div>');
        redirect(base_url() . 'noticias/menu/editar');
    }

    public function agregarNoticia() {
        //definición de reglas
        $this->form_validation->set_rules('titulo_col', 'Titulo', 'required|trim|xss_clean');
        $this->form_validation->set_rules('keywords_col', 'Keywords', 'required|trim|xss_clean');
        $this->form_validation->set_rules('autor_col', 'Autor', 'required|trim|xss_clean');
        $this->form_validation->set_rules('nota_col', 'Nota', 'required|trim|xss_clean');

        $this->form_validation->set_rules('tituloe_col', 'Titulo', 'required|trim|xss_clean');
        $this->form_validation->set_rules('notae_col', 'Nota', 'required|trim|xss_clean');

        $this->form_validation->set_error_delimiters('<div class="alert alert-error" style="margin-top: 16px;">
                                                        <button type="button" class="close" data-dismiss="alert">×</button>
                                                        <strong> Cuidado! </strong> ', '</div>');
        $this->form_validation->set_message('required', 'Hay campos vacios');


        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('agregarNoticia') && $this->form_validation->run())) {
            $tags = str_replace(',', ' ', $this->input->post('keywords_col'));
            $formulario = array(
                'titulo_col' => $this->input->post('titulo_col'),
                'keywords_col' => $tags,
                'autor_col' => $this->input->post('autor_col'),
                'nota_col' => $this->input->post('nota_col'),
                'tituloe_col' => $this->input->post('tituloe_col'),
                'notae_col' => $this->input->post('notae_col'),
                'upload_done' => ''
            );

            $error = $this->form_validation->error('titulo_col');
            $error = $this->form_validation->error('keywords_col');
            $error = $this->form_validation->error('autor_col');
            $error = $this->form_validation->error('nota_col');
            $error = $this->form_validation->error('tituloe_col');
            $error = $this->form_validation->error('keywords_col');
            $error = $this->form_validation->error('notae_col');


            $this->session->set_userdata('formulario', $formulario);
            $this->session->set_userdata('error', $error);
            redirect(base_url() . 'noticias/menu/agregar');
        }

        //el formulario esta correcto,aterrizamos las variables
        $fecha = date('Y/m/d');
        $tags = str_replace(',', ' ', $this->input->post('keywords_col'));
        //español
        $titulo_col = $this->input->post('titulo_col');
        $keywords_col = $tags;
        $autor_col = $this->input->post('autor_col');
        $nota_col = $this->input->post('nota_col');
        //ingles
        $tituloe_col = $this->input->post('tituloe_col');
        $notae_col = $this->input->post('notae_col');

        //se baja la libreria y se le pasa la configuracion
        $this->load->library('upload');

        //definimos la configuracion para la carga de imagenes
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        //inicializamos parametros
        $this->upload->initialize($config);
        // So lets upload
        if (!$this->upload->do_multi_upload('file_col')) {
            $tags = str_replace(',', ' ', $this->input->post('keywords_col'));
            $formulario = array(
                'titulo_col' => $this->input->post('titulo_col'),
                'keywords_col' => $tags,
                'autor_col' => $this->input->post('autor_col'),
                'nota_col' => $this->input->post('nota_col'),
                'tituloe_col' => $this->input->post('tituloe_col'),
                'notae_col' => $this->input->post('notae_col'),
                'upload_done' => ''
            );

            $this->session->set_userdata('error', '<div class="alert alert-error" style="margin-top: 16px;">
                                                    <button type="button" class="close" data-dismiss="alert">×</button>
                                                    <strong> Cuidado! </strong> ' . $this->upload->display_errors() . '</div>');
            $this->session->set_userdata('formulario', $formulario);

            redirect(base_url() . 'noticias/menu/agregar');
        }
        //los archivos se cargaron correctamente,guardamos en ram sus parametros
        $files_on = $this->upload->get_multi_upload_data();

        //procesamos y mandamos a la carpeta
        foreach ($files_on as $campo) {
            $this->_create_thumbnail($campo['file_name'], TRUE, 'assets/uploads/noticias/');
        }

        //procedemos a insertar en la base
        $nueva_noticia = $this->ciempies_model->agregarNoticia($nota_col, $notae_col, $titulo_col, $tituloe_col, $fecha, $autor_col, $keywords_col, $this->session->userdata('responsableID'));

        foreach ($files_on as $campo) {
            $this->ciempies_model->asociarImagenNoticia($campo['file_name'], $nueva_noticia->IDNOTICIA);
        }

        //las imagenes se subieron correctamente
        $formulario = array(
            'titulo_col' => '',
            'keywords_col' => '',
            'autor_col' => '',
            'nota_col' => '',
            'tituloe_col' => '',
            'notae_col' => '',
            'upload_done' => '<div class="alert alert-success" style="margin-top: 16px;">
                                <button type="button" class="close" data-dismiss="alert">×</button>
                                <strong>Bien!</strong> la noticia fue agregada con éxito.
                            </div>'
        );

        $this->session->set_userdata('formulario', $formulario);
        redirect(base_url() . 'noticias/menu/agregar');
    }

    public function buscarNoticia() {
        $p = $this->input->post('tag');
        $data['noticia'] = $this->ciempies_model->buscarNoticia($p);
        $this->load->view('noticias/lista_noticias', $data);
    }

    public function modificarNoticia($id) {
        global $data;
        $data['mensaje'] = $this->session->userdata('mensaje');
        $fomulario = $this->session->userdata('formulario');

        $noticia = $this->ciempies_model->contenidoNoticia($id); /* TRAE LOS DATOS DE LA NOTICIA */
        $listaImagenes = $this->ciempies_model->imagenesNoticia($id); /* TRAE las URL's DE SUS IMAGENES */

        $data['id'] = $noticia->IDNOTICIA;
        $data['titulo_col'] = $noticia->TITULO_ES;
        $data['nota_col'] = $noticia->CONTENIDO_ES;
        $data['tituloe_col'] = $noticia->TITULO_EN;
        $data['notae_col'] = $noticia->CONTENIDO_EN;
        $data['autor_col'] = $noticia->AUTOR;
        $data['keywords_col'] = $noticia->KEYWORDS;
        $data['listaImagenes'] = $listaImagenes;
        $data['upload_done'] = $fomulario['upload_done'];

        //carga de vistas
        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        $this->load->view('noticias/content_editar');
        $this->load->view('template/footer');

        //reiniciamos las variables 
        $this->session->unset_userdata('formulario');
        $this->session->unset_userdata('mensaje');
    }

    function actualizarNoticia() {
        //definición de reglas
        $this->form_validation->set_rules('titulo_col', 'Titulo', 'required|trim|xss_clean');
        $this->form_validation->set_rules('keywords_col', 'Keywords', 'required|trim|xss_clean');
        $this->form_validation->set_rules('autor_col', 'Autor', 'required|trim|xss_clean');
        $this->form_validation->set_rules('nota_col', 'Nota', 'required|trim|xss_clean');

        $this->form_validation->set_rules('tituloe_col', 'Titulo', 'required|trim|xss_clean');
        $this->form_validation->set_rules('notae_col', 'Nota', 'required|trim|xss_clean');

        $this->form_validation->set_error_delimiters('  <div class="alert alert-error" style="margin-top: 16px;">
                                                        <button type="button" class="close" data-dismiss="alert">×</button>
                                                        <strong>Cuidado!</strong>', '</div>');
        $this->form_validation->set_message('required', 'Hay campos vacios');


        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('actualizarNoticia') && $this->form_validation->run())) {
            $tags = str_replace(',', ' ', $this->input->post('keywords_col'));
            $formulario = array(
                'titulo_col' => $this->input->post('titulo_col'),
                'keywords_col' => $tags,
                'autor_col' => $this->input->post('autor_col'),
                'nota_col' => $this->input->post('nota_col'),
                'tituloe_col' => $this->input->post('tituloe_col'),
                'notae_col' => $this->input->post('notae_col'),
                'upload_done' => ''
            );

            $error = $this->form_validation->error('titulo_col');
            $error = $this->form_validation->error('keywords_col');
            $error = $this->form_validation->error('autor_col');
            $error = $this->form_validation->error('nota_col');
            $error = $this->form_validation->error('tituloe_col');
            $error = $this->form_validation->error('keywords_col');
            $error = $this->form_validation->error('notae_col');


            $this->session->set_userdata('formulario', $formulario);
            $this->session->set_userdata('error', $error);
            redirect(base_url() . 'noticias/menu/agregar');
        }

        //el formulario esta correcto,aterrizamos las variables
        //$fecha = date('Y/m/d');
        //se baja la libreria y se le pasa la configuracion
        $this->load->library('upload');

        //definimos la configuracion para la carga de imagenes
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        //inicializamos parametros
        $this->upload->initialize($config);
        // So lets upload
        if (!$this->upload->do_multi_upload('file_col')) {
            $tags = str_replace(',', ' ', $this->input->post('keywords_col'));
            $formulario = array(
                'titulo_col' => $this->input->post('titulo_col'),
                'keywords_col' => $tags,
                'autor_col' => $this->input->post('autor_col'),
                'nota_col' => $this->input->post('nota_col'),
                'tituloe_col' => $this->input->post('tituloe_col'),
                'notae_col' => $this->input->post('notae_col'),
                'upload_done' => ''
            );
            //no se seleccionaron imagenes nuevas, solo se actualizaran los campos de texto
            if ($this->upload->display_errors() == '<p>You did not select a file to upload.</p>') {
                $tags = str_replace(',', ' ', $this->input->post('keywords_col'));
                $d = array(
                    'titulo_col' => $this->input->post('titulo_col'),
                    'nota_col' => $this->input->post('nota_col'),
                    'tituloe_col' => $this->input->post('tituloe_col'),
                    'notae_col' => $this->input->post('notae_col'),
                    'keywords_col' => $tags,
                    'autor_col' => $this->input->post('autor_col'),
                    'id' => $this->input->post('id')
                );
                $this->ciempies_model->actualizarNoticia($d);
                $this->session->set_userdata('mensaje', '<div class="alert alert-success" style="margin-top: 16px;">
                                                            <button type="button" class="close" data-dismiss="alert">×</button>
                                                            <strong>Bien!</strong> La noticia fue actualizada con éxito.
                                                        </div>');
                redirect(base_url() . 'noticias/modificarNoticia/' . $this->input->post('id'));
            }

            $this->session->set_userdata('error', ' <div class="alert alert-error" style="margin-top: 16px;">
                                                    <button type="button" class="close" data-dismiss="alert">×</button>
                                                    <strong> Cuidado! </strong>' . $this->upload->display_errors() . '</div>');
            $this->session->set_userdata('formulario', $formulario);

            redirect(base_url() . 'noticias/menu/agregar');
        }

        //obtenemos y eliminamos las imagenes anteriores de la noticia
        $listaImagenes = $this->ciempies_model->actualizarImagenesNoticia($this->input->post('id'));
        foreach ($listaImagenes as $filename) {
            unlink('assets/uploads/noticias/' . $filename->URL);
        }


        //los archivos se cargaron correctamente,guardamos en ram sus parametros
        $files_on = $this->upload->get_multi_upload_data();

        //procesamos y mandamos a la carpeta
        foreach ($files_on as $campo) {
            $this->_create_thumbnail($campo['file_name'], TRUE, 'assets/uploads/noticias/');
        }

        $tags = str_replace(',', ' ', $this->input->post('keywords_col'));

        //procedemos a actualizar la noticia en la base
        $d = array(
            'titulo_col' => $this->input->post('titulo_col'),
            'nota_col' => $this->input->post('nota_col'),
            'tituloe_col' => $this->input->post('tituloe_col'),
            'notae_col' => $this->input->post('notae_col'),
            'keywords_col' => $tags,
            'autor_col' => $this->input->post('autor_col'),
            'id' => $this->input->post('id')
        );
        $this->ciempies_model->actualizarNoticia($d);

        foreach ($files_on as $campo) {
            $this->ciempies_model->asociarImagenNoticia($campo['file_name'], $this->input->post('id'));
        }

        //las imagenes se subieron correctamente
        $formulario = array(
            'titulo_col' => '',
            'keywords_col' => '',
            'autor_col' => '',
            'nota_col' => '',
            'tituloe_col' => '',
            'notae_col' => '',
            'upload_done' => '<div class="alert alert-success" style="margin-top: 16px;">
                                <button type="button" class="close" data-dismiss="alert">×</button>
                                <strong>Bien!</strong> La noticia fue actualizada con éxito.
                            </div>'
        );

        $this->session->set_userdata('formulario', $formulario);
        redirect(base_url() . 'noticias/modificarNoticia/' . $this->input->post('id'));
    }

}
